/**
 * 字典文件: 用来解析对应的查询条件
 *
 * version: 1.0.0
 *
 * created by qiuwei
 * 2016年02月18日
 */

'use strict';

const filter = require('./filterBuilder');

// 图表请求字典
const dicRequestChartData = {
	// 老师布置作业新增趋势
	'FixupWorkNewTrend': (requestData) => {
		// 解析过滤条件
		let filters = filter.build(requestData.condition);

		// 作业数
		let workData = {
			// 主体目标
			'data': {
				'target': 'homework-homework_id',
				'data_type': 'count',
				'type': 'normal'
			},
			// 时间粒度
			'time_unit': requestData.graininess,
			// 分组显示标识
			'multi_unit': '',
			// 筛选条件
			'filter': filters
		};

		// 题目数
		let subjectData = {
			// 主体目标
			'data': {
				'target': 'homework-count',
				'data_type': 'sum',
				'type': 'normal'
			},
			// 时间粒度
			'time_unit': requestData.graininess,
			// 分组显示标识
			'multi_unit': '',
			// 筛选条件
			'filter': filters
		};

		// 教师数
		let teacherData = {
			// 主体目标
			'data': {
				'target': 'homework-teacher_id',
				'data_type': 'count',
				'type': 'normal'
			},
			// 时间粒度
			'time_unit': requestData.graininess,
			// 分组显示标识
			'multi_unit': '',
			// 筛选条件
			'filter': filters
		};

		return [workData, teacherData, subjectData];
	},
	// 老师布置作业累积趋势
	'FixupWorkCumulativeTrend': (requestData) => {
		return dicRequestChartData['FixupWorkNewTrend'](requestData);
	},
	// 老师布置作业科目分布
	'FixupWorkSubjectDistribution':  (requestData) => {
		// 解析过滤条件
		let filters = filter.build(requestData.condition);

		// 作业数
		let workData = {
			// 主体目标
			'data': {
				'target': 'homework-homework_id',
				'data_type': 'count',
				'type': 'normal'
			},
			// 时间粒度
			'time_unit': '',
			// 分组显示标识
			'multi_unit': 'teacher-subject',
			// 筛选条件
			'filter': filters
		};

		// 题目数
		let subjectData = {
			// 主体目标
			'data': {
				'target': 'homework-count',
				'data_type': 'sum',
				'type': 'normal'
			},
			// 时间粒度
			'time_unit': '',
			// 分组显示标识
			'multi_unit': 'teacher-subject',
			// 筛选条件
			'filter': filters
		};

		// 教师数
		let teacherData = {
			// 主体目标
			'data': {
				'target': 'homework-teacher_id',
				'data_type': 'count',
				'type': 'normal'
			},
			// 时间粒度
			'time_unit': '',
			// 分组显示标识
			'multi_unit': 'teacher-subject',
			// 筛选条件
			'filter': filters
		};

		return [workData, teacherData, subjectData];
	},
	// 老师布置作业地域分布
	'FixupWorkAreaDistribution': (requestData) => {
		// 解析过滤条件
		let filters = filter.build(requestData.condition);

		// 作业数
		let workData = {
			// 主体目标
			'data': {
				'target': 'homework-homework_id',
				'data_type': 'count',
				'type': 'normal'
			},
			// 时间粒度
			'time_unit': '',
			// 分组显示标识
			'multi_unit': 'teacher-province_id',
			// 筛选条件
			'filter': filters
		};

		// 题目数
		let subjectData = {
			// 主体目标
			'data': {
				'target': 'homework-count',
				'data_type': 'sum',
				'type': 'normal'
			},
			// 时间粒度
			'time_unit': '',
			// 分组显示标识
			'multi_unit': 'teacher-province_id',
			// 筛选条件
			'filter': filters
		};

		// 教师数
		let teacherData = {
			// 主体目标
			'data': {
				'target': 'homework-teacher_id',
				'data_type': 'count',
				'type': 'normal'
			},
			// 时间粒度
			'time_unit': '',
			// 分组显示标识
			'multi_unit': 'teacher-province_id',
			// 筛选条件
			'filter': filters
		};

		return [workData, teacherData, subjectData];
	},
	// 老师布置作业提交率
	'FixupWorkSubmissionRate': (requestData) => {
		// 解析过滤条件
		let filters = filter.build(requestData.condition);

		// 作业数
		let rateData = {
			// 主体目标
			'data': {
				'target': 'homework-commit_rate',
				'data_type': 'avg',
				'type': 'normal'
			},
			// 时间粒度
			'time_unit': requestData.graininess,
			// 分组显示标识
			'multi_unit': '',
			// 筛选条件
			'filter': filters
		};

		return [rateData];
	},
	// 老师布置作业题目题型分布
	'FixupWorkQuestionsDistribution': (requestData) => {
		// 解析过滤条件
		let filters = filter.build(requestData.condition);

		// 作业数
		let questionData = {
			// 主体目标
			'data': {
				'target': 'homeworkquestion-question_id',
				'data_type': 'count',
				'type': 'normal'
			},
			// 时间粒度
			'time_unit': '',
			// 分组显示标识
			'multi_unit': 'question-question_type',
			// 筛选条件
			'filter': filters
		};

		return [questionData];
	}
};

module.exports = dicRequestChartData;